package com.xzmzhp.service.finance;

import com.xzmzhp.pojo.finance.FinanceStatistics;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author: 王源(xm)
 * @create: 2022-03-15 20:24
 * @program: ams
 * @description: 财务统计表数据逻辑实现类
 */
@Repository
public interface FinanceStatisticsService {

    /**
     * 查询所有财务统计信息
     *
     * @return 财务统计信息
     */
    List<FinanceStatistics> findAll();

    /**
     * 根据财务统计id查询财务统计信息
     *
     * @param fstatisticsId 财务统计id
     * @return 相关财务统计信息
     */
    FinanceStatistics findFinanceStatisticsByFstatisticsId(Integer fstatisticsId);

    /**
     * 获取余额
     *
     * @return 财务统计信息
     */
    BigDecimal findBalance();

    /**
     * 根据时间获取信息
     *
     * @param date 开始时间
     * @return 财务统计信息
     */
    FinanceStatistics findFinanceStatisticsByDate(Date date);

    /**
     * 查询一段时间内的财务统计信息
     *
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return 一段时间内的财务统计信息
     */
    List<FinanceStatistics> countFinanceStatistics(Date startDate,Date endDate);


    /**
     * 根据时间类型查询财务信息
     * @param dateType 时间类型
     * @return 月、年财务信息
     */
    List<FinanceStatistics> findFinanceStatisticsByDateType(Integer dateType);

    /**
     * 添加财务统计信息
     * @param financeStatistics 财务统计信息
     * @return 是否成功
     */
    Integer addFinanceStatistics(FinanceStatistics financeStatistics);

    /**
     * 修改财务统计信息
     * @param financeStatistics 财务信息
     * @return 是否成功
     */
    Integer editFinanceStatistics(FinanceStatistics financeStatistics);

    /**
     * 根据时间修改余额信息
     * @param changeAmount 变动金额
     * @param creationTime 创建时间
     * @return 是否成功
     */
    Integer editBalanceByDate(BigDecimal changeAmount,Date creationTime);

    /**
     * 删除财务统计信息
     * @param financeStatisticsId 财务统计信息
     * @return 是否成功
     */
    Integer delFinanceStatistics(Integer financeStatisticsId);
}
